#include <stdio.h>


int main(int argc, char const *argv[])
{
    // a 是一个int类型变量，而10这是该变量的初始值
    int a = 10 ;

    // p 他也是一个变量，而他的类型是int * 
    // &a 这是把a的地址取出并作为变量p的初始值
    int * p = &a ;


    // 由于前方已经让指针p指向了变量a的地址
    // 因此此处可以通过指针p来间接访问变量a的数据
    printf("通过指针来访问变量a:%d\n" , *p );

    // 因此此处可以通过指针p来间接修改变量a的数据
    *p = 666 ;

    // 再使用a来检查数据是否被指针p所修改
    printf("通过变量a来访问数据:%d\n" , a );



    // 定义一个整型变量room ，并赋予初始值为1024
    int room = 1024 ;

    // 定义一个指针变量key
    // 注意此处没有初始化，因此他是一个野指针
    int * key ;

    // &room 表示获得前方定义的room变量的地址
    // 通过复制符号=把room的地址存入到变量key中
    key = &room ;

    // %p 格式空字符用于输出地址值数据
    // 由于key是一个存储了room地址的变量
    // 因此打印key变量时使用%p最合适不过了
    printf("key:%p\n" , key );

    // * 在当前语境中表示解引用
    // *key这是访问key所指向的内存中的数据
    printf("*key:%d\n" , *key );

    // 把2024这个新的数据
    // 存入到key所指向的内存空间中
    *key = 2024 ;


    return 0;
}





